home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
newsgrp
/
group96a.txt
/
000129_icon-group-sender _Tue Jun 11 13:54:29 1996.msg
< prev
next >
Wrap
Internet Message Format
|
1996-09-05
|
2KB
Received: by cheltenham.cs.arizona.edu; Tue, 11 Jun 1996 07:45:12 MST
To: icon-group@cs.arizona.edu
Date: 11 Jun 1996 13:54:29 +1000
From: ok@goanna.cs.rmit.EDU.AU (Richard A. O'Keefe)
Message-Id: <4piqll$mpm@goanna.cs.rmit.EDU.AU>
Organization: Comp Sci, RMIT, Melbourne, Australia
Sender: icon-group-request@cs.arizona.edu
References: <4pa3hq$lpc@labrador.cs.purdue.edu>, <8gd9395zyb.fsf@galapagos.cse.psu.edu>, <4pga54$2qt@lectura.CS.Arizona.EDU>
Subject: Re: m3 should have SWAP(a,b)
Errors-To: icon-group-errors@cs.arizona.edu
Status: O
Concerning swap and rotate.
(1) Burroughs Algol had READLOCK(Variable, Value) which stored Value into
Variable and returned the old value of Variable.
(2) Didnt "Mary" have a swap operator?
(3) Mesa allowed record constructors on the left hand side of assignment,
Pair[x,y] := Pair[y,x];
for example.
(4) Pop-2 allows many forms of rotation.
For example, to get the effect of a,b,c := b,c,a
do a, c, b -> a -> b -> c
(This means Push(a); Push(c); Push(b); PopInto(a); PopInto(b); PopInto(c);)
(5) Dijkstra's notation uses parallel assignment; I believe there have been
one or two implementations of it.
(6) The Lisp equivalent of swap and rotate is not 'let' but PSETF and
ROTATEF.
When I tried to learn how to play the bagpipes, the reason bagpipers play
all those trills and twiddly bits became instantly apparent: if you try
to changing fingering from that for note X to that for note Y the way you
would with a recorder or flute, it sounds _horrible_, because the air keeps
on flowing and you get strange sounds as you pass through intermediate
states. Half the art of piping is dancing all around the notes in order to
pass from one note to another without hitting intermediate states that will
sound bad.
That's the reason why parallel assignment is useful: it lets you move from
one state to another *without* introducing strange intermediate states.
--
Fifty years of programming language research, and we end up with C++ ???
Richard A. O'Keefe; http://www.cs.rmit.edu.au/~ok; RMIT Comp.Sci.